<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>继承</title>
</head>
<body>

<script>
    class Vehicle{
        constructor(){
            this.passengers = [];
            console.log("交通工具创建");
        }
        addPassenger(p){
            this.passengers.push(p);
        }
    }
    //    汽车  继承  交通工具类
    class Car extends Vehicle{
        // 静态方法
        static getnextVin(){
            console.log("静态方法");
        }
        constructor(){
            super();
            console.log("汽车类创建");
        }
        //普通方法
        deployAirbags(){
            console.log("bwoosh");
        }
    }
    const v = new Vehicle();
    v.addPassenger("tom");
    console.log(v.passengers.join(","));
    const c = new Car();
    c.addPassenger("Alice");
    console.log(c.passengers.join(","));
    c.deployAirbags();
    Car.getnextVin();//静态方法通过类名调用
    // 注意，可以在c上调用deployAirbags,但是不能在v上调用。换言之，继承
    // 是单向的。Car类的实例可以访问所有Vehicle类的方法，反之却不行。
    //v..deployAirbags();//报错
</script>

</body>
</html>